package _08作业.t5;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Properties;

/**
 * 1. 实现多用户的注册登录。
 *
 * 2. 服务端可以接收多个用户的请求连接。
 *
 * 3. 客户端登录发送用户名和密码，格式： jack=123456
 *
 * 4. 用户名和密码通过键盘录入。
 *
 * 5. 服务器端接收到用户名和密码之后，查询本地保存注册信息的文件：
 *
 *    判断用户名是否存在，如果用户名存在，则判断密码是否正确，如果密码不正确，则提示客端户密码错误，如果密码正确，则提示客户端登录成功。
 *    如果用户名不存在，则使用接收到的用户名和密码注册一个账号，注册成功则提示客户端注册成功。注册失败则提示客户端注册失败。
 */
public class T5Server {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(8888);
        Properties prop = new Properties();
        prop.load(new FileReader("day12\\src\\_08作业\\t5\\user.properties"));

        while (true){

            Socket socket = serverSocket.accept();
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        //读取客户端信息
                        InputStream sis = socket.getInputStream();
                        InputStreamReader isr = new InputStreamReader(sis);
                        BufferedReader br = new BufferedReader(isr);
                        String readLine = br.readLine();

                        String[] split = readLine.split("=");
                        String username = split[0];
                        String password = split[1];

                        String result;
                        if (prop.containsKey(username)){
                            //用户名存在，判断密码
                            if (password.equals((String) prop.get(username))){
                                //密码正确
                                result = "客户端登录成功";
                            }else {
                                result ="客户端密码错误";
                            }
                        }else {
                            //用户名不存在,注册用户
                            FileOutputStream fos = new FileOutputStream("day12\\src\\_08作业\\t5\\user.properties",true);
                            fos.write((username+"="+password).getBytes());
                            fos.write(("\r\n").getBytes());
                            prop.load(new FileReader("day12\\src\\_08作业\\t5\\user.properties"));
                            if (prop.containsKey(username)){
                                result = "客户端注册成功";
                            }else {
                                result = "客户端注册失败";
                            }
                        }

                        OutputStream socketOutputStream = socket.getOutputStream();
                        PrintStream ps = new PrintStream(socketOutputStream);
                        ps.println(result);

                        ps.close();
                        socketOutputStream.close();
                        br.close();
                        isr.close();
                        sis.close();
                        socket.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }).start();


        }




    }

}
